
import javax.microedition.lcdui.*;


public class Mapa extends Canvas {
        

        //atributo
        private int ancho;
        private int largo;
        private int posx;
        private int posy;
        private boolean pintar;
        private int coloractual;
        
        // variables
        int[][] terreno = new int[10][10];
        int cont = 0;
        Image imagen;
        int hcuadro;
        int wcuadro;
        int delay;
        long time1;
        long time2;
        String codigo;
        
        public Mapa(String codigo){
                this.setFullScreenMode(false);
                ancho = this.getWidth();
                largo = this.getHeight();
                hcuadro = largo/10;
                wcuadro = ancho/10;
                posx = 0;
                posy = 9;
                pintar=false;
                coloractual=3;
                for (int j=0; j<10; j++)
                        for (int i=0; i<10; i++){
                                terreno[i][j]=codigo.charAt(cont)-48;
                                cont++;
                        }
                terreno[0][9]=1;
        }
        
        
        protected void paint(Graphics arg) {

                /*
                try{
                        //arg.setClip(0,0, wcuadro, hcuadro);
                        imagen = Image.createImage("/caso1.png");
                }
                catch (IOException exception){
                        exception.printStackTrace();
                }
                cosa= new Sprite(imagen, 50, 50);
                cosa.defineReferencePixel(0, 0);
                cosa.setRefPixelPosition(50, 50);
                arg.drawImage(imagen, 0, 0, Graphics.LEFT | Graphics.TOP);
                
                */
                for (int j=0; j<10; j++)
                        for (int i=0; i<10; i++){
                        		switch(terreno[i][j]){
                        			case 1:
                        				arg.setColor(255,255,255);
                        			break;
                        			case 2:
                        				arg.setColor(87, 87, 87);
                        			break;
                        			case 3:
                        				arg.setColor(255, 0 , 0);
                        			break;
                        			case 4:
                        				arg.setColor(255,255,0);
                        			break;
                        			case 5:
                        				arg.setColor(0,0,255);
                        			break;
                        			case 6:
                        				arg.setColor(0,100,0);
                        			break;
                        			default:
                        				arg.setColor(255,255,255);
                        			break;
                        				
                        		}
                        		/*
                                if ((terreno[i][j]!=2) && (terreno[i][j]!=3)&& (terreno[i][j]!=4)&& (terreno[i][j]!=5)&& (terreno[i][j]!=6))
                                        arg.setColor(255,255,255);
                                else
                                        if(terreno[i][j]==2)
                                                arg.setColor(200, 200, 200);
                                        else
                                                arg.setColor(255, 0 , 0);
                                */
                                arg.fillRect(i*wcuadro, j*hcuadro, wcuadro, hcuadro);
                                arg.setColor(0,0,0);
                                arg.drawRect(i*wcuadro, j*hcuadro, wcuadro, hcuadro);
                                arg.setColor(0, 255, 0);
                                arg.fillRoundRect((posx*wcuadro)+(wcuadro/3), posy*hcuadro, wcuadro/2, hcuadro/2, 40, 40);
                                arg.fillRect(posx*wcuadro, (posy*hcuadro)+(hcuadro/2), wcuadro, hcuadro/2);
                                
                               
                                /*
                                try{
                                        if ((terreno[i][j]!=2) || (terreno[i][j]!=3))
                                                imagen = Image.createImage("/imagenes/caso1.png");
                                        else
                                                imagen = Image.createImage("/imagenes/caso"+terreno[i][j]+".png");
                                }
                                catch (IOException exception){
                                        exception.printStackTrace();
                                }
                                Image icono = Image.createImage(wcuadro, hcuadro);
                                arg = icono.getGraphics();
                                arg.setClip(i*wcuadro, j*hcuadro, wcuadro, hcuadro);
                                arg.drawImage(imagen, i*largo, j*ancho, Graphics.LEFT | Graphics.TOP);
                                */
                        }
                
                
        }
   protected void keyPressed(int keyC)
   {
          
          super.keyPressed(keyC);
         
         switch(keyC){
         		case KEY_NUM1:
         			pintar=!pintar;
         		break;
         		case KEY_NUM3:
         			cambiarcolor();
         		break;
                case KEY_NUM2:
                        arriba();
                break;
                case KEY_NUM8:
                        abajo();
                break;
                case KEY_NUM6:
                        derecha();
                break;
                case KEY_NUM4:
                        izquierda();
                break;
                case KEY_NUM5:
	                	String cod1="52565256525652565856585658565856544444444";
	                    String cod2="5626262242424666224268486666648444446844466868668686525";
	                    String cod3="13626624622424246666222688866664844444866664844866684668621333";


                        lector(cod3);
                break;  
                        
         }
      repaint();
         
   }
   public void lector(String code){
	   Hilo hilo=new Hilo();
	   codigo=code;
	   hilo.start();
   }
  
   public void arriba(){
           if(posy!=0)
                   if(terreno[posx][posy-1]!=2)
                   {
                           if(pintar){
                                   terreno[posx][posy]=coloractual;
                           }
                           posy--;
                   }
           
   }
   protected void abajo(){
           if(posy!=9)
                   if(terreno[posx][posy+1]!=2)
                   {
                           if(pintar){
                                   terreno[posx][posy]=coloractual;
                           }
                           posy++;
                   }
                   
   }
   protected void izquierda(){
           if(posx!=0)
                   if(terreno[posx-1][posy]!=2)
                   {
                           if(pintar){
                                   terreno[posx][posy]=coloractual;
                           }
                           posx--;
                   }
           
   }
   protected void derecha(){
           if(posx!=9)
                   if(terreno[posx+1][posy]!=2)
                   {
                           if(pintar){
                                   terreno[posx][posy]=coloractual;
                           }
                
                           posx++;
                   }
           
   }
   protected void cambiarcolor(){
	   coloractual=coloractual==6?3:coloractual+1;
	   
   }
   
   public class Hilo extends Thread{
	   public void run(){
		   for(int i=0; i<=codigo.length(); i++){
               try{
            	   Hilo.sleep(200);
               }catch(Exception e){
            	   
               }
			   
               switch(codigo.charAt(i)-48){
                            case 2:
              
                                    arriba();
                            break;
                            case 8:
                                    abajo();
                            break;
                            case 4:
                                    izquierda();
                            break;
                            case 6:
                                    derecha();
                            break;
                            case 1:
                                    pintar=!pintar;
                            break;
                            case 3:
                            		cambiarcolor();
                            break;
               }
               repaint();
               System.out.println(coloractual);
       }
	   }
   }
        
        

}
	



